package com.sample.android.dao;

import java.util.ArrayList;
import java.util.List;

import com.sample.android.entity.Utilisateur;
import com.sample.android.sqlite.MySQLiteHelper;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class UtilisateurDataSource
{

	// Database fields
	private SQLiteDatabase	database;
	private MySQLiteHelper	dbHelper;
	private String[]		allColumns	= { "_id", "email", "password",
			"birthday"					};

	public UtilisateurDataSource(Context context)
	{
		dbHelper = new MySQLiteHelper(context);
	}

	public void open() throws SQLException
	{
		database = dbHelper.getWritableDatabase();
	}

	public void close()
	{
		dbHelper.close();
	}

	public Utilisateur createUtilisateur(String email, String password,
			String birthday, long _id)
	{
		ContentValues values = new ContentValues();
		values.put("email", email);
		values.put("password", password);
		values.put("birthday", birthday);
		values.put("_id", _id);
		long insertId = database.insert("Utilisateur", null, values);
		Cursor cursor = database.query("Utilisateur", allColumns, "_id = "
				+ _id, null, null, null, null);
		cursor.moveToFirst();
		Utilisateur newUtilisateur = cursorToUtilisateur(cursor);
		cursor.close();
		return newUtilisateur;
	}

	public void deleteUtilisateur(Utilisateur utilisateur)
	{
		long id = utilisateur.getId();
		System.out.println("User deleted with id: " + id);
		database.delete("Utilisateur", "_id = " + id, null);
	}

	public List<Utilisateur> getAllUtilisateurs()
	{
		List<Utilisateur> utilisateurs = new ArrayList<Utilisateur>();

		Cursor cursor = database.query("Utilisateur", allColumns, null, null,
				null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast())
		{
			Utilisateur utilisateur = cursorToUtilisateur(cursor);
			utilisateurs.add(utilisateur);
			cursor.moveToNext();
		}
		// make sure to close the cursor
		cursor.close();
		return utilisateurs;
	}

	private Utilisateur cursorToUtilisateur(Cursor cursor)
	{
		Utilisateur utilisateur = new Utilisateur();
		utilisateur.setId(cursor.getLong(0));
		utilisateur.setEmail(cursor.getString(1));
		utilisateur.setPassword(cursor.getString(2));
		utilisateur.setBirthday(cursor.getString(3));
		return utilisateur;
	}

	public void createUtilisateur(Utilisateur utilisateur)
	{
		// TODO Auto-generated method stub
		createUtilisateur(utilisateur.getEmail(), utilisateur.getPassword(),
				utilisateur.getBirthday(), utilisateur.getId());
	}

}
